#pragma once

#include "statu_msg.h"
#include <iostream>
#include <vector>

class Util
{
public:
    // 1. 字符串分隔函数，将src字符按照sec字符进行分割
    static size_t Split(const std::string &src, const std::string &sep, std::vector<std::string> *array);

    // 2. 读取文件所有内容，将内容放到buf中
    static bool ReadFile(const std::string &filename, std::string *buf);

    // 3. 先文件写入数据
    static bool WriteFile(const std::string &filename, const std::string &but);

    // 4. URL编码
    static std::string UrlEncode(const std::string &url, bool convert_space_to_plus);

    static char HEXTOI(char c);
    // 5. URL解码
    static std::string UrlDecode(const std::string url, bool convert_plus_to_space);

    // 6. 响应状态码的信息获取
    static std::string StatuDesc(int statu);

    // 7. 根据文件后缀名获取文件mime
    static std::string ExtMime(const std::string &filename);

    // 8. 判断一个文件是否是一个目录
    static bool IsDirectory(const std::string &filename);

    // 9. 判断一个文件是否是普通文件
    static bool IsRegulay(const std::string &filename);

    // 10. http请求的资源路径有效性判断
    static bool ValidPath(const std::string &path);
};